package com.wbl.train.business.service;

import com.wbl.train.common.business.dto.DailyTrainSeatDto;
import com.wbl.train.common.business.entity.DailyTrainCarriageEntity;
import com.wbl.train.common.business.entity.DailyTrainSeatEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wbl.train.common.page.PageVo;

import java.time.LocalDate;
import java.util.Date;
import java.util.List;

/**
 * 每日座位 服务类
 * @author 王博纶
 * @since 2024-02-11
 */
public interface DailyTrainSeatService extends IService<DailyTrainSeatEntity> {

    /**
     * 查询火车车厢座位的信息
     * @param dailyTrainSeatDto 火车车厢座位DTO
     * @return 分页信息
     */
    PageVo<DailyTrainSeatEntity> queryTrainSeat(DailyTrainSeatDto dailyTrainSeatDto);

    /**
     * 新增火车车厢座位
     * @param dailyTrainSeat 火车车厢座位
     * @return 是否新增成功
     */
    boolean insertAndUpdateTrain(DailyTrainSeatEntity dailyTrainSeat);

    /**
     * 生成火车座位信息
     * @param date 要生成的日期
     * @param trainCode 火车编号
     * @param now 当前时间
     */
    void genDailySeat(LocalDate date, String trainCode, Date now);

    /**
     * 查询座位的数量
     * @param date 要查询的日期
     * @param trainCode 车次的编号
     * @param seatType 座位的类型
     * @return 指定座位类型的座位的数量
     */
    int countSeat(LocalDate date, String trainCode, String seatType);

    /**
     * 根据火车编号，日期，和箱序查询对应的座位信息
     * @param date 日期
     * @param trainCode 火车编号
     * @param index 厢序
     * @return 选中的座位
     */
    List<DailyTrainSeatEntity> selectByCarriage(LocalDate date, String trainCode, Integer index);
}
